package ddu.com.config.properties;

import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @author:zhangxia
 * @createTime: 2018/4/18 17:29
 * @version:1.0
 * @desc:数据库配置信息
 */
@Slf4j
@Component(value = "dataProperties")
@Getter
@PropertySource(value = "classpath:jdbc.properties")
public class DataProperties {


    public DataProperties() {
        log.info("数据库配置信息 初始化：{}",DataProperties.class.getName());
    }

    /**
     * 驱动名称
     */
    @Value("${druid.driverClassName}")
    private String driverClassName;

    /**
     * 数据库地址
     */
    @Value("${druid.url}")
    private String url;

    /**
     * 数据库登录名
     */
    @Value("${druid.username}")
    private String userName;

    /**
     * 数据库登录密码
     */
    @Value("${druid.password}")
    private String passWord;

    /**
     * 初始化连接数量
     */
    @Value("${druid.initialSize}")
    private Integer initialSize;

    /**
     * 最小空闲连接数
     */
    @Value("${druid.minIdle}")
    private Integer minIdle;

    /**
     * 最大并发连接数
     */
    @Value("${druid.maxActive}")
    private Integer maxActive;

    /**
     *  配置获取连接等待超时的时间
     */
    @Value("${druid.maxWait}")
    private Integer maxWait;

    /**
     * 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒
     */
    @Value("${druid.timeBetweenEvictionRunsMillis}")
    private Integer timeBetweenEvictionRunsMillis;

    @Value("${druid.minEvictableIdleTimeMillis}")
    private Integer minEvictableIdleTimeMillis;

    @Value("${druid.validationQuery}")
    private String validationQuery;

    /**
     * 打开PSCache，并且指定每个连接上PSCache的大小 如果用Oracle，则把poolPreparedStatements配置为true，mysql可以配置为false。
     */
    @Value("${druid.poolPreparedStatements}")
    private String poolPreparedStatements;

    /**
     * 配置监控统计拦截的filters
     */
    @Value("${druid.filters}")
    private String filters;

}
